if(!jsx3.lang.Class.forName("ux.cdb.admin.receiptPkg.pkgWizard.packageInfo")) {
	jsx3.lang.Class.defineClass("ux.cdb.admin.receiptPkg.pkgWizard.packageInfo",
			ux.megatron.gui.WizardPanel,
			null,
			function (block) {
				/**
				 * instance initializer
				 * @param strName {String} unique name distinguishing this object from all other JSX GUI objects in the JSX application
				 * @param vntLeft {int|String} either a number (i.e, 12, 30, etc) or a number and a unit value (i.e., "25%", "36pt", etc); if a number is passed, pixels will be the assumed unit when painted to screen
				 * @param vntTop {int|String} either a number (i.e, 12, 30, etc) or a number and a unit value (i.e., "25%", "36pt", etc); if a number is passed, pixels will be the assumed unit when painted to screen
				 * @param vntWidth {int|String} either a number (i.e, 12, 30, etc) or a number and a unit value (i.e., "25%", "36pt", etc); if a number is passed, pixels will be the assumed unit when painted to screen
				 * @param vntHeight {int|String} either a number (i.e, 12, 30, etc) or a number and a unit value (i.e., "25%", "36pt", etc); if a number is passed, pixels will be the assumed unit when painted to screen
				 * @param strHTML {String} Text/HTML markup to place in the jsx3.gui.Block instance
				 */
				block.prototype.init = function(strName, vntLeft, vntTop, vntWidth, vntHeight, strHTML) {
					//call constructor for super class (the super expects the name of the object and the function that it is an instance of)
					this.jsxsuper(strName, vntLeft, vntTop, vntWidth, vntHeight, strHTML);
				};

				block.prototype.initialize = function(msg) {
					this.wizard = this.getAncestorOfType("ux.megatron.gui.SteppedWizard");
					this.get("blkBatchInfo").setData(this.wizard.batchInfoCdf);
					this.get("blkBatchInfo").repaint();
				}

				block.prototype.onNext = function(objWIZARD, objBUTTON, objEVENT, strCURRENTPANEL) {
					return null; // return "NONE" to not next panels
				}

				block.prototype.onPrev = function(objWIZARD, objBUTTON, objEVENT, strCURRENTPANEL) {
					var me = this;
					this.isCountry = this.getAncestorOfType("ux.cdb.admin.receiptPkg.pkgWizard.Builder").isCountry;
					if(this.isCountry){
						ux.megatron.util.Dwr.callDwr("RetailStudentLoanContractFeedBackCountryUCC", 
							"unlockAppListForGather", [this.wizard.lockArray],
							me,me.callBackUnlockAppListForGather, 
							"RetailStudentLoanContractFeedBackCountryUCC");	
					}else{
						ux.megatron.util.Dwr.callDwr("RetailStudentLoanContractFeedBackProvinceUCC", 
							"unlockBatches", [this.wizard.lockArray],
							me,me.callBackUnlockAppListForGather, 
							"RetailStudentLoanContractFeedBackProvinceUCC");	
					}
				}

				block.prototype.callBackUnlockAppListForGather = function(dwrObjectList) {
					if(!dwrObjectList)
						jsx3.log("call getInternalOrgInfo failed......");
					if(dwrObjectList.res.flag != 1){
						alert("error, unlock failed!");
						return;
					}
					this.getAncestorOfType("ux.cdb.admin.receiptPkg.pkgWizard.Builder").get("btnClose").setEnabled(jsx3.gui.Form.STATEENABLED, true);
				}

				block.prototype.onRevert = function(objWIZARD, objBUTTON, objEVENT, strCURRENTPANEL) {
					return null; // return "NONE" to not last status
				}

				block.prototype.onCancel = function(objWIZARD, objBUTTON, objEVENT, strCURRENTPANEL) {
					return null; // return "NONE" to not advance panels
				}

				block.prototype.onFinish = function(objWIZARD, objBUTTON, objEVENT, strCURRENTPANEL){
					var me = this;
					this.isCountry = this.getAncestorOfType("ux.cdb.admin.receiptPkg.pkgWizard.Builder").isCountry;
					if(this.isCountry){
						ux.megatron.util.Dwr.callDwr("RetailStudentLoanContractFeedBackCountryUCC",
								"gatherCountryContracts",[this.wizard.ctrtIdsArray],
								me,me.callBackNewPkg,
								"RetailStudentLoanContractFeedBackCountryUCC");
					}else{
						ux.megatron.util.Dwr.callDwr("RetailStudentLoanContractFeedBackProvinceUCC",
								"gatherProvinceContracts",[this.wizard.ctrtIdsArray],
								me,me.callBackNewPkg,
								"RetailStudentLoanContractFeedBackProvinceUCC");
					}
					objBUTTON.disable();
					return "NONE";
				}

				block.prototype.callBackNewPkg = function(dwrObject){
					if(dwrObject.res.flag == 1){
						this.closeDialog();
					}else{
						alert("error,submit failed");
					}
				}

				block.prototype.closeDialog = function() {
					this.getAncestorOfType("ux.cdb.admin.receiptPkg.pkgWizard.Builder").opener.onRefreshUI();
					this.getAncestorOfType(jsx3.gui.Dialog).doClose();
				}

				block.prototype.onCustomNav = function(objWIZARD, objBUTTON, objEVENT, strCURRENTPANEL) {
					return null; // return "NONE" to not advance panels
				}

				block.prototype.onBeforeShow = function(objWIZARD, objBUTTON, objEVENT, strLASTPANEL) {
					if(!this.getChild(0)) {
						var me = this;
						ux.megatron.Main.loadUIResourceAsync(me, "ux.cdb.admin","ux/cdb/admin/receiptPkg/pkgWizard/step2/ui/packageInfoContent.xml", me, me.initialize);
					}
					return null; // return "NONE" to not advance panels
				}

				block.prototype.onAfterHide = function(objWIZARD, objBUTTON, objEVENT, strNEXTPANEL) {
					return null; // return "NONE" to not advance panels
				}
			}
	);
}
